package org.bitoy.shimmer.config.filter;

import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.core.annotation.Order;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

@Slf4j
public class DemoFilter implements Filter {
    /**
     * 程序启动时执行
     */
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        log.info("demofilter init");
    }

    /**
     * 每次请求执行一次
     */
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        // 在调用后续过滤器之前执行的代码，一般用来处理Request，如请求校验
        log.info("demofilter过滤器处理request：" + servletRequest.getRemoteHost());
        // 使用过滤器链调用下一个，否则顺序在此之后的过滤器不会执行
        filterChain.doFilter(servletRequest, servletResponse);
        // 在过滤器链调用完成后处理的代码，一般用来处理Response，如响应包装
        log.info("demofilter过滤器处理response：" + servletResponse.getOutputStream().toString());
    }

    /**
     * 程序关闭时执行
     */
    @Override
    public void destroy() {
        log.info("demofilter destroy");
    }
}
